<?php
/**
 * PHP Class
 *
 * LICENSE
 *
 * Processing: Store Single Module
 *
 * @category   	Gnn Cms
 * @package    	Gnn Module
 * @copyright  	Copyright vinanewstar.vn@gmail.com
 * @author		GiangNam (vinanewstar.vn@gmail.com)
 * @license    	GNU General Public License Version 2 or later (the "GPL")
 * @version     v1.0 Jun 4, 2013 || 9:54:08 AM
 */
/**
 * Module Params: 
 * gccache: yes|1, no|0
 * gccache_time: global|0, customtime
 * @author admin
 *
 */
class Zendvn_Modules_Module{
	public $id;
	public $title;
	public $moduletype;
	public $ordering;
	public $position;
	public $checked_out;
	public $checked_out_time;
	public $publish_up;
	public $publish_down;
	public $access;
	public $published;
	public $params;
	public $module;
	public $showTitle;
	public $client_id;
	public $language;
	public $content;
	
	public $gcTemplate;
	public $gcView;
	public $gcRequestParams;
	public $gcModulePath;
	public $gcModuleUrl;
	
	public $gcTransport;
	
	public function __construct($id){
		$this->id = $id;
		$this->_loadModule($id);
		$this->gcTransport  = new stdClass();
	}
	
	/**
	 * load module from database
	 * @param integer $id
	 */
	private function _loadModule($id){
		$db 	= Zend_Registry::get(REGISTRY_KEY_DBO);
		$sql 	= $db->select()
					->from(TBL_PRF."modules", array(
												'id','access','checked_out','checked_out_time','client_id','language','params','module','moduletype','ordering',
												 'position','publish_down','publish_up','published','showtitle','title'
													)
						  )
					->where("id = ?",$id);
		$module = $db->fetchRow($sql);
		
		$this->id 							= $module['id'];
		$this->access 						= $module['access'];
		$this->checked_out 					= $module['checked_out'];
		$this->checked_out_time 			= $module['checked_out_time'];
		$this->client_id 					= $module['client_id'];
		$this->language 					= $module['language'];
		$this->params 						= ($module['params'] =="") ? null : json_decode($module['params']);
		$this->module 						= $module['module'];
		$this->moduletype 					= $module['moduletype'];
		$this->ordering 					= $module['ordering'];
		$this->position 					= $module['position'];
		$this->publish_down 				= $module['publish_down'];
		$this->publish_up 					= $module['publish_up'];
		$this->published 					= $module['published'];
		$this->showTitle 					= $module['showtitle'];
		$this->title 						= $module['title'];
	}
	public function canRunWithLanguage(){
		
		if($this->language == "*"){
			return true;
		}
		
		if ($this->language != Zendvn_System_Info::getLanguage()){
			return false;
		}
		return true;
	}
	
	/**
	 * Load module content and cache it
	 * if module currently not cached, call method renderContent() to render content
	 * @param Zendvn_Template $template
	 * @return void|string
	 */
	public function loadContent(Zendvn_Template $template){
		// if module cache enable
		if($this->params != null && !empty($this->params->gccache) && $this->params->gccache == 1){
			$timeout 		 = ($this->params->gccache == 0 ) ? GLOBAL_CACHING_MODULE : $this->params->gccache;
			$cache 			 = Zendvn_Cache::getModuleCacher($timeout);
			$this->content 	 = Zendvn_Cache::getVariableFromCache($cache,'gccmodule_'.$this->module,$this, "renderContent", $template);
		}else $this->content = $this->renderContent($template);
	}
	
	/**
	 * render module content
	 * @param Zendvn_Template $template
	 * @return void|string
	 */
	public function renderContent(Zendvn_Template $template){
		// if module type is custom html
		if($this->canRunWithLanguage() == false) return ' <p style="color:red">The module "'.$this->module .'" not available in language "'.Zendvn_System_Info::getLanguage().'".</p>'; 
		if($this->moduletype == 1){
			$db 	= Zend_Registry::get(REGISTRY_KEY_DBO);
			$sql 	= $db->select()
						->from(TBL_PRF."modules", array('content'))
						->where("id = ?",$this->id);
			return  current($db->fetchRow($sql));
		}
		
		$this->gcTemplate  			= $template;
		$this->gcView      			= $template->gcView;
		$this->gcRequestParams      = $this->gcView->gcRequestParams;
		$this->gcModulePath      	= ($this->client_id == 1) ? MODULES_PATH_FRONT.DS.$this->module
															  : MODULES_PATH_BACK .DS.$this->module;
		$this->gcModuleUrl			= ($this->client_id == 1) ? MODULES_URL_FRONT.DS.$this->module
															  : MODULES_URL_BACK .DS.$this->module;
		ob_start();
		require($this->gcModulePath.DS.'index.php');
		$modContent 	.= ob_get_contents();
		ob_clean();
		return $modContent;
	}
	/**
	 * require view
	 * @param String $view
	 */
	public function gcLoadView($view = 'default'){
		require  $this->gcModulePath.DS.'tmpl'.DS.$view.'.php';
	}
	
}
// tôi xin chân
// thành cảm ơn tới các ban ngành,lãnh
// đạo,cảm ơn ôngnguyễn tấn dũng và
// đoàn thể nhà nước việtnam đãcho tôi
// được thấy hình ảnh này,xincảm ơn
// Mark Zuckerberg,ngườ i đồng sánglập
// ra facebook,cảm ơn nước mỹvì đã
// sinhra 1 con người thông minh và
// xuất sắc nhưthế này,để tôi xem được
// bức ảnh đẹp thếnày cũng phải cảm
// ơn đến Bill Gate,ngườiđồng sáng lập
// ra microsoft windows xp,cảmơn cha và
// mẹ ông cũng như người vợ yêuquý
// của ông,cảm ơn tổng thống
// nướcmỹ,cảm ơn nhà nước liên xô cũ
// đã giúp việtnam chúng tôi xây dựng
// thành công đậpthủy điện Hòa Bình và
// mang điện đến chochúng tôi thắp
// sáng,nấu cơm cũng như là cóđiệnđể
// chạy máy tính lên facebook xemảnh
// này,xin chânthành cảm ơn đến
// bố,mẹđã sinh ra tôi,cảm ơn các thầy
// cô đã dạycho tôi biết chữ,biết viết
// văn,làm toán,dạytôi làm người
// tốt.cảm ơn thượng đế đã bancho tôi
// đôi mắt sáng suốt để tôi có thểnhìn
// thấu đáo được hình ảnh đẹp như
// thếnày,cảm ơn tập đoàn viễnthông
// quân độiviettel đã mang internet đến
// với nhàtôi,cảm ơn đến Moắc-Xoenđã
// nghiên cứuvà tìm ra sóng điện từ,và
// với bước sóngngắn có bước sónglam
// đa từ 10 đến100m,tần số từ 100Hz đã
// mang theo sóng3G mang dữ liệu cho
// hình ảnh này đượctruyền đi xa hơn,và
// cũng cảm ơn đến bàmẹ thiên nhiên
// đã ban cho trái đất khungcảnhnày,cả
// m ơn đến nữ oa nươngnương,phật tổ
// như lai đã cứu khổ chúngsinh,cảm ơn
// ông anh cha ta đã dũng cảm hisinh
// để tạo nên chiến thắng vẻ vang
// chiếndịch Điện Biên Phủ trên không
// Hà Nội ngàynay,cảm ơn Bác Hồ vĩ đại
// của chúng ta,cảmơn Đại tướngVõ
// Nguyên Giáp là đại tướngđầutiên
// của việt nam vàcảm ơn trời đấtđã cho
// ông sống đến ngày hôm
// nay,NÓICHUNG là bức ảnh nàyđẹp
// quá.làm saocảm ơn hết được đây,cảm
// ơn mọi người đãhi sinh chút thời gian
// để đọc compmentnày,chú c các bạn
// hạnh phúc